home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- import cups
- import os
- import smburi
- import socket
- import subprocess
- from timedops import TimedSubprocess, TimedOperation
- from base import *
-
- try:
- import smbc
- except:
- pass
-
-
- class CheckNetworkServerSanity(Question):
-
- def __init__(self, troubleshooter):
- Question.__init__(self, troubleshooter, 'Check network server sanity')
- troubleshooter.new_page(gtk.Label(), self)
-
-
- def display(self):
- self.answers = { }
- answers = self.troubleshooter.answers
- if not answers.has_key('remote_server_name') and not answers.has_key('remote_server_ip_address'):
- return False
- parent = self.troubleshooter.get_window()
- server_name = answers['remote_server_name']
- server_port = answers.get('remote_server_port', 631)
- if server_name:
-
- try:
- ai = socket.getaddrinfo(server_name, server_port)
- resolves = map((lambda .0: (family, socktype, proto, canonname, sockaddr) = .0sockaddr[0]), ai)
- except socket.gaierror:
- not answers.has_key('remote_server_ip_address')
- not answers.has_key('remote_server_ip_address')
- resolves = False
- except:
- not answers.has_key('remote_server_ip_address')
-
- self.answers['remote_server_name_resolves'] = resolves
- if resolves:
- ipaddr = answers.get('remote_server_ip_address', '')
- if ipaddr:
-
- try:
- resolves.index(ipaddr)
- except ValueError:
- not answers.has_key('remote_server_ip_address')
- not answers.has_key('remote_server_ip_address')
- server_name = ipaddr
- except:
- not answers.has_key('remote_server_ip_address')<EXCEPTION MATCH>ValueError
-
-
- not answers.has_key('remote_server_ip_address')<EXCEPTION MATCH>ValueError
-
- else:
- server_name = answers['remote_server_ip_address']
-
- try:
- ai = socket.getaddrinfo(server_name, server_port)
- resolves = map((lambda .0: (family, socktype, proto, canonname, sockaddr) = .0sockaddr[0]), ai)
- except socket.gaierror:
- resolves = False
-
- self.answers['remote_server_name_resolves'] = resolves
- self.answers['remote_server_try_connect'] = server_name
- if self.answers['remote_server_name_resolves'] and answers.get('cups_device_uri_scheme', 'ipp') == 'ipp':
-
- try:
- cups.setServer(server_name)
- cups.setPort(server_port)
- self.op = TimedOperation(cups.Connection, parent = parent)
- c = self.op.run()
- ipp_connect = True
- except RuntimeError:
- ipp_connect = False
-
- self.answers['remote_server_connect_ipp'] = ipp_connect
- if ipp_connect:
-
- try:
- self.op = TimedOperation(c.getPrinters, parent = parent)
- self.op.run()
- cups_server = True
- except:
- cups_server = False
-
- self.answers['remote_server_cups'] = cups_server
- if cups_server and answers.get('cups_queue', False):
-
- try:
- self.op = TimedOperation(c.getPrinterAttributes, args = (answers['cups_queue'],), parent = parent)
- attr = self.op.run()
- self.answers['remote_cups_queue_attributes'] = attr
-
-
-
-
- if self.answers['remote_server_name_resolves'] and not self.answers.get('remote_server_connect_ipp', False):
- context = None
-
- try:
- context = smbc.Context()
- name = self.answers['remote_server_try_connect']
- self.op = TimedOperation(context.opendir, args = ('smb://%s/' % name,), parent = parent)
- dir = self.op.run()
- self.op = TimedOperation(dir.getdents, parent = parent)
- shares = self.op.run()
- self.answers['remote_server_smb'] = True
- self.answers['remote_server_smb_shares'] = shares
- except NameError:
- pass
- except RuntimeError:
- (e, s) = None
- self.answers['remote_server_smb_shares'] = (e, s)
-
- if context != None and answers.has_key('cups_printer_dict'):
- uri = answers['cups_printer_dict'].get('device-uri', '')
- u = smburi.SMBURI(uri)
- (group, host, share, user, password) = u.separate()
- accessible = False
-
- try:
- self.op = TimedOperation(context.open, args = ('smb://%s/%s' % (host, share), os.O_RDWR, 511), parent = parent)
- f = self.op.run()
- accessible = True
- except RuntimeError:
- (e, s) = None
- accessible = (e, s)
-
- self.answers['remote_server_smb_share_anon_access'] = accessible
-
-
- if self.answers['remote_server_name_resolves'] and not answers.has_key('remote_server_traceroute'):
-
- try:
- self.op = TimedSubprocess(parent = parent, args = [
- 'traceroute',
- '-w',
- '1',
- server_name], stdin = file('/dev/null'), stdout = subprocess.PIPE, stderr = subprocess.PIPE)
- self.answers['remote_server_traceroute'] = self.op.run()
-
-
- return False
-
-
- def collect_answer(self):
- return self.answers
-
-
- def cancel_operation(self):
- self.op.cancel()
-
-
-